/*
 * MediaRender.h
 *
 *  Created on: 2017年3月16日
 *      Author: chuanjiang.zh
 */

#ifndef MEDIARENDER_H_
#define MEDIARENDER_H_

#include "BasicType.h"
#include "MFormat.h"

namespace av
{

class VideoRender;
class AudioRender;


class DLLEXPORT MediaRender
{
public:
	static void startup();

	static void cleanup();

	static MediaRender* create(void* wnd);

	static void destroy(MediaRender* render);

public:
	virtual ~MediaRender() {}

	virtual int open(const MFormat& fmt) =0;

	virtual void close() =0;

	virtual bool isOpen() =0;

	virtual int write(MPacket& pkt) =0;

	virtual int play() =0;

	virtual int pause() =0;

	virtual void stop() =0;

	virtual void flush() =0;

	virtual int getState() =0;

};


class DLLEXPORT MediaRenderContetx
{
public:

	MediaRenderContetx()
	{
		MediaRender::startup();
	}

	~MediaRenderContetx()
	{
		MediaRender::cleanup();
	}

};



} /* namespace av */

#endif /* MEDIARENDER_H_ */
